#!/bin/bash

# Breeze Admin 停止脚本
# 作者: System Admin
# 日期: $(date +%Y-%m-%d)

set -e

# 配置变量
DEPLOY_DIR="/Users/shouzhi/techzhi/project/gitee/jar-deploy"
JAR_NAME="breeze-admin.jar"
SERVICE_NAME="breeze-admin"
PID_FILE="$DEPLOY_DIR/${SERVICE_NAME}.pid"

echo "停止 Breeze Admin 服务..."

# 检查PID文件
if [ ! -f "$PID_FILE" ]; then
    echo "警告: PID文件不存在，尝试通过进程名查找..."
    PID=$(pgrep -f "$JAR_NAME" || true)
    if [ -z "$PID" ]; then
        echo "服务未运行"
        exit 0
    fi
else
    PID=$(cat "$PID_FILE")
fi

# 检查进程是否存在
if [ -n "$PID" ] && ps -p "$PID" > /dev/null 2>&1; then
    echo "找到运行中的服务 (PID: $PID)"
    
    # 优雅停止
    echo "发送TERM信号..."
    kill -TERM "$PID"
    
    # 等待进程结束
    for i in {1..30}; do
        if ! ps -p "$PID" > /dev/null 2>&1; then
            echo "服务已优雅停止"
            rm -f "$PID_FILE"
            exit 0
        fi
        echo "等待服务停止... ($i/30)"
        sleep 1
    done
    
    # 强制停止
    echo "服务未响应，发送KILL信号..."
    kill -KILL "$PID"
    sleep 2
    
    if ! ps -p "$PID" > /dev/null 2>&1; then
        echo "服务已强制停止"
        rm -f "$PID_FILE"
    else
        echo "错误: 无法停止服务"
        exit 1
    fi
else
    echo "服务未运行"
    rm -f "$PID_FILE"
fi
